This invention relates to technologies by which to control the execution of commands, and it particularly relates to a technology by which to control the issuing order of commands received from an external source.
Along with recent years' marked advance of computer graphics technology and image processing technology, which are used in the areas of computer games, digital broadcasting and the like, there is demand for information processing apparatuses, such as computers, game machines and televisions, to have the capacity to process image data of higher definition at higher speed. To meet such demand, it goes without saying that it is necessary to realize high speed of arithmetic processing itself, but it is just as important to appropriately share the tasks among a plurality of processing units.
In so doing, control commands (hereinafter simply referred to as “command”) for instructing the execution of tasks to one another are sent and received among a plurality of processing units, and thus the processing units operate in linkage with one another. For example, a processing unit A transmits a variety of commands to another processing unit B. The processing unit B queues the received commands in its own queue. The processing unit B executes the commands in the queue in the order of ones easier to execute. This type of processing, namely, command queuing and out-of-order execution, is widely employed as an effective technique in having the processing unit A and the processing unit B operate asynchronously and raising the processing efficiency of a plurality of processing units as a whole.
According to a command queuing and out-of-order execution as mentioned above, once the processing unit A transmits a command to the processing unit B, it has, in fact, no need to know the state of processing at the processing unit B. Yet, among commands, there are ones that must be executed according to the command processing state at the processing unit B. For example, when a processing unit A transmits to a processing unit B an operation instructing command for instructing a predetermined arithmetic operation and follows this up by a transmission of a read command for instructing the readout of the operation results, it is necessary that the read command be executed after the completion of the execution of the operation instructing command.
If the processing unit B is to adjust the execution order in light of the contents of the commands when carrying out an out-of-order execution of the commands in its queue, there will be much burden on the processing unit B. On the other hand, if the processing unit A is to control the transmission timing of a read command according to the command processing state of the processing unit B, there will be much burden on the processing unit A. In either of the methods, it is necessary for the processing unit A and the processing unit B to detect more or less of each other's state, and the situation like this can be a cause for worsened processing efficiency of a plurality of processing units as a whole.